/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package model;

import dao.ClienteDAO;
import dao.LocalizaCidadeDAO;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.*;
import javax.persistence.GenerationType;
import org.hibernate.FetchMode;
import org.hibernate.annotations.Fetch;

/**
 *
 * @author JONATAS
 */

@Entity
@SequenceGenerator(name="projetoSequence",sequenceName="seq_projeto", allocationSize=1)
public class Projeto implements Serializable {
    
    @Id
    @GeneratedValue (strategy = GenerationType.SEQUENCE, generator="projetoSequence")
    private int pro_id;
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date dataCadastroProjeto;
    private String pro_descricao;    
    @ManyToOne
    private Cliente cliente;
    
    private float pro_altura;
    private float pro_comprimento;
    private float pro_largura;
    
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date pro_dataInicio;
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date pro_dataInicioPrevista;
    private String pro_obsInicio;
    private String pro_usuarioInicio;
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date pro_dataFimPrevista;
    
    private int pro_status; /* -1, 0, 1, 2 */
    
    private String pro_logradouroInst;
    private String pro_complementoInst;
    private String pro_bairroInst;
    private int pro_cepinst;
    @ManyToOne
    private LocalizaCidade pro_cidadeInst;
    
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date pro_dataEncerra;
    private String pro_usuarioEncerra;
    private String pro_obsEncerra;

    private float pro_valorTotal;

    @ManyToOne
    @JoinColumn(name="pro_projetoPrincipal_id",insertable=true, updatable=true)   
    private Projeto projetoPrincipal;
    
    public Cliente getCliente() {
        ClientePK cpk = new ClientePK();
        cpk.setCpf_cnpj(cliente.getCpf_cnpj());
        cpk.setTipoPessoa(cliente.getTipoPessoa());
        cliente = new ClienteDAO().findById(cpk);
                
        return cliente;
    }

    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }

    public float getPro_altura() {
        return pro_altura;
    }

    public void setPro_altura(float pro_altura) {
        this.pro_altura = pro_altura;
    }

    public float getPro_comprimento() {
        return pro_comprimento;
    }

    public void setPro_comprimento(float pro_comprimento) {
        this.pro_comprimento = pro_comprimento;
    }

    public float getPro_largura() {
        return pro_largura;
    }

    public void setPro_largura(float pro_largura) {
        this.pro_largura = pro_largura;
    }


    public String getPro_bairroInst() {
        return pro_bairroInst;
    }

    public void setPro_bairroInst(String pro_bairroInst) {
        this.pro_bairroInst = pro_bairroInst;
    }

    public int getPro_cepinst() {
        return pro_cepinst;
    }

    public void setPro_cepinst(int pro_cepinst) {
        this.pro_cepinst = pro_cepinst;
    }

    public LocalizaCidade getPro_cidadeInst() {
        return pro_cidadeInst;
    }
    
    public LocalizaEstado getPro_estadoInst() {
        return pro_cidadeInst.getEstado_cidade();
    }
    
    public LocalizaPais getPro_paisInst() {
        return pro_cidadeInst.getEstado_cidade().getPais_estado();
    }

    public void setPro_cidadeInst(LocalizaCidade pro_cidadeInst) {
        this.pro_cidadeInst = pro_cidadeInst;
    }

    public String getPro_complementoInst() {
        return pro_complementoInst;
    }

    public void setPro_complementoInst(String pro_complementoInst) {
        this.pro_complementoInst = pro_complementoInst;
    }

    public Date getPro_dataEncerra() {
        return pro_dataEncerra;
    }

    public void setPro_dataEncerra(Date pro_dataEncerra) {
        this.pro_dataEncerra = pro_dataEncerra;
    }

    public Date getPro_dataInicio() {
        return pro_dataInicio;
    }

    public void setPro_dataInicio(Date pro_dataInicio) {
        this.pro_dataInicio = pro_dataInicio;
    }

    public String getPro_descricao() {
        return pro_descricao;
    }

    public void setPro_descricao(String pro_descricao) {
        this.pro_descricao = pro_descricao;
    }

    public int getPro_id() {
        return pro_id;
    }

    public void setPro_id(int pro_id) {
        this.pro_id = pro_id;
    }
    
    public String getPro_logradouroInst() {
        return pro_logradouroInst;
    }

    public void setPro_logradouroInst(String pro_logradouroInst) {
        this.pro_logradouroInst = pro_logradouroInst;
    }

    public int getPro_status() {
        return pro_status;
    }

    public void setPro_status(int pro_status) {
        this.pro_status = pro_status;
    }

    public String getPro_usuarioEncerra() {
        return pro_usuarioEncerra;
    }

    public void setPro_usuarioEncerra(String pro_usuarioEncerra) {
        this.pro_usuarioEncerra = pro_usuarioEncerra;
    }

    public Date getDataCadastroProjeto() {
        return dataCadastroProjeto;
    }

    public void setDataCadastroProjeto(Date dataCadastroProjeto) {
        this.dataCadastroProjeto = dataCadastroProjeto;
    }

    public Date getPro_dataFimPrevista() {
        return pro_dataFimPrevista;
    }

    public void setPro_dataFimPrevista(Date pro_dataFimPrevista) {
        this.pro_dataFimPrevista = pro_dataFimPrevista;
    }

    public Date getPro_dataInicioPrevista() {
        return pro_dataInicioPrevista;
    }

    public void setPro_dataInicioPrevista(Date pro_dataInicioPrevista) {
        this.pro_dataInicioPrevista = pro_dataInicioPrevista;
    }

    public String getPro_obsEncerra() {
        return pro_obsEncerra;
    }

    public void setPro_obsEncerra(String pro_obsEncerra) {
        this.pro_obsEncerra = pro_obsEncerra;
    }

    public String getPro_obsInicio() {
        return pro_obsInicio;
    }

    public void setPro_obsInicio(String pro_obsInicio) {
        this.pro_obsInicio = pro_obsInicio;
    }

    public Projeto getProjetoPrincipal() {
        return projetoPrincipal;
    }

    public void setProjetoPrincipal(Projeto projetoPrincipal) {
        this.projetoPrincipal = projetoPrincipal;
    }

    public float getPro_valorTotal() {
        return pro_valorTotal;
    }

    public void setPro_valorTotal(float pro_valorTotal) {
        this.pro_valorTotal = pro_valorTotal;
    }
    public String getEnderecoInst(){
        String endereco;
        endereco = this.pro_logradouroInst+", "+this.pro_bairroInst;
        System.out.println("endereco - "+endereco);
        if(!this.pro_complementoInst.trim().isEmpty()){
            endereco = endereco+", "+this.pro_complementoInst;   
            System.out.println("endereco+complemento -> "+endereco);
        }
        System.out.println("endereco+complemento+retorno -> "+endereco+".");
        return endereco+".";
    }

    public String getPro_usuarioInicio() {
        return pro_usuarioInicio;
    }

    public void setPro_usuarioInicio(String pro_usuarioInicio) {
        this.pro_usuarioInicio = pro_usuarioInicio;
    }
    
            
}


